import proxy from "ux-data-proxy";
import { defaultsDeep, mixin } from "lodash";
// 默认配置
const defaultProxy = {
    limitParam: 'per_page',
    pageParam: 'page',
    autoLoad: true
};
// 扩展数据请求代理
export default {
    /**
    * 初始化
     *
     * @param {*} store,数据源对象
     */
    init(store: any) {
        // 根据配置类型读取不同的默认配置
        switch (store.proxy.type) {
            // 内存代理使用默认配置
            case 'promise.memory':
                break;
            default:
                defaultsDeep(store.proxy, defaultProxy);
                break;
        }
        // console.log('newStore.init');
        // 它本身的方法会被代理对象的方法覆盖，放在后面则相反
        mixin(store, this);
        // 将当前代理对象的方法挂载到数据源对象，代理对象的方法会覆盖代理对象原有的方法
        proxy.init(store);
        // 如果放在 proxy.init(store);之后执行
        // 如果设置了初始化自动加载，首次请求writerTransform不会触发
    },
    // 后端返回数据格式不统一，在这里处理下
    readerTransform(data: any) {
        const item = data.data, records = item.records;
        if (records) {
            data.data = records;
            data.total = item.total;
            data.message = data.msg;
        }
        return data;
    }
}